package org.easy.chatai.model;

import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;

import java.util.List;

@Data
public class ChatModelRequest {

    /**
     * Model ID, 可以通过 List Models 获取
     */
    private String model;

    /**
     * 包含迄今为止对话的消息列表
     */
    private List<AiMessage> messages;


    /**
     * 默认为 0，如果设置，值域须为 [0, 1] 我们推荐 0.3，以达到较合适的效果
     */
    private Float temperature = 1f;

    @JSONField(name = "top_p")
    private Float topP = 0.7f;

    /**
     * 为每条输入消息生成1-5个结果
     */
    private Integer n = 1;


    /**
     * 存在惩罚，介于-2.0到2.0之间的数字。正值会根据新生成的词汇是否出现在文本中来进行惩罚，增加模型讨论新话题的可能性
     */
    @JSONField(name = "presence_penalty")
    private Integer presencePenalty = 0;

    /**
     * 频率惩罚，介于-2.0到2.0之间的数字。正值会根据新生成的词汇在文本中现有的频率来进行惩罚，减少模型一字不差重复同样话语的可能性
     */
    @JSONField(name = "frequency_penalty")
    private Integer frequencyPenalty = 0;

    /**
     * 是否流式输出
     */
    private Boolean stream = true;

}